package ar.edu.utn.frsf.tpae.a2012.g05;

import ar.edu.utn.frsf.tpae.a2012.g05.dao.ClienteDao;
import ar.edu.utn.frsf.tpae.a2012.g05.dao.CuentaDao;
import ar.edu.utn.frsf.tpae.a2012.g05.dao.MovimientoDao;
import ar.edu.utn.frsf.tpae.a2012.g05.dao.impl.ClienteDaoImpl;
import ar.edu.utn.frsf.tpae.a2012.g05.dao.impl.CuentaDaoImpl;
import ar.edu.utn.frsf.tpae.a2012.g05.dao.impl.MovimientoDaoImpl;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.CajaAhorro;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.Cliente;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.CuentaCorriente;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.Movimiento;
import ar.edu.utn.frsf.tpae.a2012.g05.entity.Pago;
import ar.edu.utn.frsf.tpae.a2012.g05.util.EntityFactory;


public class App 
{
    public static void main( String[] args )
    {
		ClienteDao clienteDao = new ClienteDaoImpl();
		CuentaDao cuentaDao = new CuentaDaoImpl();
	    MovimientoDao movimientoDao = new MovimientoDaoImpl();
	    
		Cliente cliente1 = EntityFactory.getCliente();
		clienteDao.saveOrUpdate(cliente1);
		
		CuentaCorriente cuentaCorriente1 = EntityFactory.getCuentaCorriente();
		cuentaCorriente1.setCliente(cliente1);
		cuentaDao.saveOrUpdate(cuentaCorriente1);
		
		CajaAhorro cajaAhorro1 = EntityFactory.getCajaAhorro();
		cajaAhorro1.setCliente(cliente1);
		cuentaDao.saveOrUpdate(cajaAhorro1);
		
	    Movimiento movimiento1 = EntityFactory.getMovimiento();
	    movimiento1.setCuenta(cuentaCorriente1);
	    movimientoDao.saveOrUpdate(movimiento1);
	    
	    Pago pago1 = EntityFactory.getPago();
	    pago1.setCuenta(cajaAhorro1);
	    movimientoDao.saveOrUpdate(pago1);
	    
	    Cliente cliente2 = EntityFactory.getCliente();
		
		CuentaCorriente cuentaCorriente2 = EntityFactory.getCuentaCorriente();
		cuentaCorriente2.setCliente(cliente2);
		cliente2.getCuentas().add(cuentaCorriente2);
		
		CajaAhorro cajaAhorro2 = EntityFactory.getCajaAhorro();
		cajaAhorro2.setCliente(cliente2);
		cliente2.getCuentas().add(cajaAhorro2);
		
	    Movimiento movimiento2 = EntityFactory.getMovimiento();
	    movimiento2.setCuenta(cuentaCorriente2);
	    cuentaCorriente2.getMovimientos().add(movimiento2);
	    
	    Pago pago2 = EntityFactory.getPago();
	    pago2.setCuenta(cajaAhorro2);
	    cajaAhorro2.getMovimientos().add(pago2);
	    
	    clienteDao.saveOrUpdate(cliente2);
	    
    }
}

